﻿using System;
using System.Collections.Generic;
using MapEngine;
using System.Windows;
using GameEngine.Libs;

namespace GameEngine.Model.Data
{
    public interface IThingVO<IdType> : IVO
        where IdType : IComparable<IdType>
    {
        IThingTypeVOId TypeId { get; }
        IThingVOId<IdType> Id { get; }
        Point3d Position { get; set; }
        Point Direction { get; set; }
        bool MovingWithMouse { get; set; }
        IViewStateVO State{ get; set; }
    }
    public interface IThingVOId<IdType> : IId<IdType> where IdType : IComparable<IdType>{}

    public interface IViewStateVO
    {
        string Value { get; }
    }

    public interface ISensingThingVO<IdType> : IThingVO<IdType> where IdType : IComparable<IdType>
    {
        //não guarda valores calculados em runtime
    }

    public interface IMovingThingVO<IdType> : ISensingThingVO<IdType> where IdType : IComparable<IdType>
    {
        Point? Destination { get; set; }
        
    }

    public interface IThinkingThingVO<IdType> : IMovingThingVO<IdType> where IdType : IComparable<IdType>
    {
        NeuralNetwork Brain { get; set; }  
    }
}
